Every server relies on physical memory, such as dynamic random access memory (DRAM), for processing. In addition to processors, physical memory is one of the most performance-critical resources for modern servers, and also constitutes a significant portion of the total server hardware costs.
Currently, memory modules are collocated with processors on a system board in a server. Nowadays, there are more and more processors, e.g., multi-core chips, provided on each system board. This requires even more memory to accommodate the processing needs of the increased number of processors. However, the requirement for more memory increases costs and size requirements. Furthermore, costs associated with sub-systems, such as power and cooling systems, increase due to the requirement for more memory on each system board. For businesses or other entities requiring many servers, this can represent a significant cost increase. Memory sharing schemes have been proposed, such as sharing memory among multiple processors and other schemes. However, these schemes tend to be difficult and costly to implement or require significant changes to commodity servers, operating systems and memory controllers.